%
% MAIN
% 
% Autor:
%       Grupo 2
%
global IMGPATH EXT TESTPATH;

constants;
format long;

% Genero los patrones que memoriza la red
memorizingPatterns = generatePatterns(IMGPATH,EXT);

% A partir de los patrones que memoriza genero la matriz de pesos
% (estática)
weights = createWeightsMatrix(memorizingPatterns);

% Genero los patrones a presentarle a la red
testingPatterns = generatePatterns(TESTPATH,EXT);

y = zeros(length(testingPatterns(:,1)),length(testingPatterns(1,:)));

% Le presento a la red todos los patrones en orden
for i = 1:length(testingPatterns(1,:))
   pattern = testingPatterns(:,i);
   S = pattern;
   previousS = S;
   flag = 1;
   h = figure;
   image(vectorToPNG(S));
   figure(h);
   
   % Voy a ciclar hasta que S no cambie
   while flag == 1
      flag = 0;
      shuffleIndex = randperm(N);
      for j = 1:N
          S = updateElement(S, shuffleIndex(j), weights);
          if ~isequal(S,previousS)
              flag = 1;
          end
          previousS = S;
      end
   end
   
   y(:,i) = S;
   h = figure;
   image(vectorToPNG(y(:,i)));
   figure(h);
end
